import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: DELL
 * Date: 2023-03-12
 * Time: 20:19
 */

// 获取一些HAPI获取请求中的一些参数 queryString的值以及 body的值...
@WebServlet("/getParameter")
public class GetParameterServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 获取queryString中的键值对  getparameter方法: 以字符串形式返回请求参数的值
        // 如果键不存在, 得到的就是null   如果键存在,值不存在, 得到的就是" " 空
        // 假设浏览器请求如下: ?studentID=10&studentName=张三

        String studentId = req.getParameter("studentId");
        // getparameter会自动针对urlencode 的结果进行处理

        String studentName = req.getParameter("studentName");
        System.out.println(studentId);
        System.out.println(studentName);

        // 告诉浏览器此次响应的类型为html 字符集为utf8
        resp.setContentType("text/html; charset=utf8");
        resp.getWriter().write(studentId + ", " + studentName);

        // 此时浏览器无法正确识别张三, 并非没有urlencode(服务器打印正常)
        // 但是返回响应的的液面, 浏览器没能正确识别, 因此需要在正式响应中加上content type
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 通过 body 获取, 发送一个post请求
        // 预期请求的 body 里为 studentId = 10&studentName = 张三
        // 请求设置请求字符集 告诉 servlet(Tomcat)  该如何解析
        req.setCharacterEncoding("utf8");

        String studentId = req.getParameter("studentId");
        String studentName = req.getParameter("studentName");
        System.out.println(studentId);
        System.out.println(studentName);



        // 设置浏览器响应格式 告诉浏览器该如何解析
        resp.setContentType("text/html; charset=utf8");
        resp.getWriter().write(studentId + "," + studentName);
    }
}
